import type { RouteRecordRaw } from 'vue-router'
/**
 * 判断用户是否有权限
 * @param permissionKey 权限标识
 * @returns 是否有权限
 */
export function hasPermission(permissionKey: string): boolean {
  // 在实际项目中，这里应该从store中获取权限
  // 但由于store在组件外调用有问题，这里先简单返回true
  if (!permissionKey) return true
  
  // 开发阶段先返回true允许所有权限
  return true
}

/**
 * 根据权限过滤路由
 * @param routes 路由配置
 * @returns 过滤后的路由
 */
export function filterAsyncRoutes(routes: RouteRecordRaw[]): RouteRecordRaw[] {
  const res: RouteRecordRaw[] = []
  
  routes.forEach(route => {
    const tmp = { ...route }
    
    // 验证是否有权限访问该路由
    if (hasRoutePermission(tmp)) {
      if (tmp.children) {
        tmp.children = filterAsyncRoutes(tmp.children)
      }
      res.push(tmp)
    }
  })
  
  return res
}

/**
 * 判断路由是否有权限
 * @param route 路由
 * @returns 是否有权限
 */
function hasRoutePermission(route: RouteRecordRaw): boolean {
  // 没有设置meta或meta.permission，则所有人可访问
  if (!route.meta || !route.meta.permission) {
    return true
  }
  
  // 校验权限
  return hasPermission(route.meta.permission as string)
}
